home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / SPLINT.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  696b  |  26 lines

  1. PROCEDURE splint(xa,ya,y2a: glnarray; n: integer;
  2.        x: real; VAR y: real);
  3. (* Programs using routine SPLINT must define the type
  4. TYPE
  5.    glnarray = ARRAY [1..n] OF real;
  6. in the main routine. *)
  7. VAR
  8.    klo,khi,k: integer;
  9.    h,b,a: real;
  10. BEGIN
  11.    klo := 1;
  12.    khi := n;
  13.    WHILE (khi-klo > 1) DO BEGIN
  14.       k := (khi+klo) DIV 2;
  15.       IF (xa[k] > x) THEN khi := k ELSE klo := k
  16.    END;
  17.    h := xa[khi]-xa[klo];
  18.    IF (h = 0.0) THEN BEGIN
  19.       writeln ('pause in routine SPLINT');
  20.       writeln (' ... bad XA input'); readln END;
  21.    a := (xa[khi]-x)/h;
  22.    b := (x-xa[klo])/h;
  23.    y := a*ya[klo]+b*ya[khi]+
  24.       ((a*a*a-a)*y2a[klo]+(b*b*b-b)*y2a[khi])*(h*h)/6.0
  25. END;
  26.